package com.google.android.gms.common.internal.safeparcel;

import android.os.Bundle;
import android.os.IBinder;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.Parcelable.Creator;
import java.util.ArrayList;

public class SafeParcelReader {

    public static class ParseException extends RuntimeException {
        public ParseException(String str, Parcel parcel) {
            int dataPosition = parcel.dataPosition();
            super(new StringBuilder(String.valueOf(str).length() + 41).append(str).append(" Parcel: pos=").append(dataPosition).append(" size=").append(parcel.dataSize()).toString());
        }
    }

    public static int ॱ(Parcel parcel) {
        return parcel.readInt();
    }

    public static int ˋ(int i) {
        return 65535 & i;
    }

    public static int ॱ(Parcel parcel, int i) {
        if ((i & -65536) != -65536) {
            return (i >> 16) & 65535;
        }
        return parcel.readInt();
    }

    public static void ˎ(Parcel parcel, int i) {
        parcel.setDataPosition(ॱ(parcel, i) + parcel.dataPosition());
    }

    private static void ˎ(Parcel parcel, int i, int i2) {
        int ॱ = ॱ(parcel, i);
        if (ॱ != i2) {
            String toHexString = Integer.toHexString(ॱ);
            throw new ParseException(new StringBuilder(String.valueOf(toHexString).length() + 46).append("Expected size ").append(i2).append(" got ").append(ॱ).append(" (0x").append(toHexString).append(")").toString(), parcel);
        }
    }

    public static int ˊ(Parcel parcel) {
        int ॱ = ॱ(parcel);
        int ॱ2 = ॱ(parcel, ॱ);
        int dataPosition = parcel.dataPosition();
        if (ˋ(ॱ) != 20293) {
            String str = "Expected object header. Got 0x";
            String valueOf = String.valueOf(Integer.toHexString(ॱ));
            throw new ParseException(valueOf.length() != 0 ? str.concat(valueOf) : new String(str), parcel);
        }
        ॱ = dataPosition + ॱ2;
        if (ॱ >= dataPosition && ॱ <= parcel.dataSize()) {
            return ॱ;
        }
        throw new ParseException("Size read is invalid start=" + dataPosition + " end=" + ॱ, parcel);
    }

    public static boolean ˊ(Parcel parcel, int i) {
        ˎ(parcel, i, 4);
        return parcel.readInt() != 0;
    }

    public static int ˏ(Parcel parcel, int i) {
        ˎ(parcel, i, 4);
        return parcel.readInt();
    }

    public static long ˋ(Parcel parcel, int i) {
        ˎ(parcel, i, 8);
        return parcel.readLong();
    }

    public static float ʻ(Parcel parcel, int i) {
        ˎ(parcel, i, 4);
        return parcel.readFloat();
    }

    public static String ॱॱ(Parcel parcel, int i) {
        int ॱ = ॱ(parcel, i);
        int dataPosition = parcel.dataPosition();
        if (ॱ == 0) {
            return null;
        }
        String readString = parcel.readString();
        parcel.setDataPosition(ॱ + dataPosition);
        return readString;
    }

    public static IBinder ʽ(Parcel parcel, int i) {
        int ॱ = ॱ(parcel, i);
        int dataPosition = parcel.dataPosition();
        if (ॱ == 0) {
            return null;
        }
        IBinder readStrongBinder = parcel.readStrongBinder();
        parcel.setDataPosition(ॱ + dataPosition);
        return readStrongBinder;
    }

    public static <T extends Parcelable> T ॱ(Parcel parcel, int i, Creator<T> creator) {
        int ॱ = ॱ(parcel, i);
        int dataPosition = parcel.dataPosition();
        if (ॱ == 0) {
            return null;
        }
        Parcelable parcelable = (Parcelable) creator.createFromParcel(parcel);
        parcel.setDataPosition(ॱ + dataPosition);
        return parcelable;
    }

    public static Bundle ʼ(Parcel parcel, int i) {
        int ॱ = ॱ(parcel, i);
        int dataPosition = parcel.dataPosition();
        if (ॱ == 0) {
            return null;
        }
        Bundle readBundle = parcel.readBundle();
        parcel.setDataPosition(ॱ + dataPosition);
        return readBundle;
    }

    public static ArrayList<String> ᐝ(Parcel parcel, int i) {
        int ॱ = ॱ(parcel, i);
        int dataPosition = parcel.dataPosition();
        if (ॱ == 0) {
            return null;
        }
        ArrayList<String> createStringArrayList = parcel.createStringArrayList();
        parcel.setDataPosition(ॱ + dataPosition);
        return createStringArrayList;
    }

    public static <T> T[] ˎ(Parcel parcel, int i, Creator<T> creator) {
        int ॱ = ॱ(parcel, i);
        int dataPosition = parcel.dataPosition();
        if (ॱ == 0) {
            return null;
        }
        T[] createTypedArray = parcel.createTypedArray(creator);
        parcel.setDataPosition(ॱ + dataPosition);
        return createTypedArray;
    }

    public static void ͺ(Parcel parcel, int i) {
        if (parcel.dataPosition() != i) {
            throw new ParseException("Overread allowed size end=" + i, parcel);
        }
    }
}
